package com.cellulam.framework.core.exceptions;

import com.cellulam.framework.core.model.DataResult;

import java.util.Map;

public interface ErrorStatus<T extends ErrorStatus> {
    int getStatus();

    String getMessage();

    Map<Integer, T> getErrorMaps();


    default T valueOf(int status) {
        if (this.getErrorMaps().containsKey(status)) {
            return this.getErrorMaps().get(status);
        } else {
            return null;
        }
    }

    default String getMessage(Object... args) {
        return String.format(this.getMessage(), args);
    }

    default DataResult toDataResult() {
        return DataResult.fail(this.getStatus(), this.getMessage());
    }

    default DataResult toDataResult(Object... args) {
        return DataResult.fail(this.getStatus(), this.getMessage(args));
    }
}
